﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Negocios
{
    public class MailServer
    {
        private static ListaClientesRegistrados ListaClientesRegistrados = new ListaClientesRegistrados();
        private static ListaMensajesServidor ListaMensajesServidor = new ListaMensajesServidor();

        public static void AtualizarEstadoCorreo(int posicion)
        {
            ListaMensajesServidor.AtualizarEstadoCorreo(posicion);
        }
        public static List<string> MensajesPorUsuario(string usuario)
        {
            return ListaMensajesServidor.MensajesPorUsuario(usuario);
        }
        public static void CargarClientes()
        {
            if (ListaClientesRegistrados.Count_ListaClientesRegistrados() == 0)
            {
                ListaClientesRegistrados.CargarClientes();
            }
        }
        public static bool VerificarDatosusuario(string nombreMailClient, string contrasena)
        {
            return ListaClientesRegistrados.VerificarDatosusuario(nombreMailClient, contrasena);
        }
        public static void registerMessage(Message objMessage)
        {
            ListaMensajesServidor.Add_ListaMensajesServidor(objMessage);
        }
        public static int getMessagesWaiting(string name)
        {
            return AccionesServidor.getMessagesWaiting(name, ListaMensajesServidor);
        }
        public static Message getNextMessage(string name)
        {
            Message mensajeDevolver = null;
            for (int i = 0; i < ListaMensajesServidor.Count_ListaClientesRegistrados(); i++)
            {
                Message Message = ListaMensajesServidor.ElementAt_listaMailClientRegistragos(i);
                string destinatario = Message.SeleccionarDestinatario();
                mensajeDevolver = RealizarPostMensaje(destinatario, name, i);
            }
            return mensajeDevolver;
        }
        private static Message RealizarPostMensaje(string nombreCompararLista, string nombreCompararParametro, int posicion)
        {
            if (nombreCompararLista.Equals(nombreCompararParametro))
            {
                Message mensaje = ListaMensajesServidor.ElementAt_listaMailClientRegistragos(posicion);
                ListaMensajesServidor.RemoveAt_listaMailClientRegistragos(posicion);
                AccionesServidor.post(mensaje, ListaClientesRegistrados);
                return mensaje;
            }
            return null;
        }
    }
}
